using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._AviationTools._Charting._DataManagement
{
    /// <summary>
    /// <para>Prepare Aviation Data</para>
    /// <para>Evaluates aviation data based on organizationally specific JSON scripts, returning values necessary for cartographic labeling and symbolization. Returned values are stored in a single attribute of your features.</para>
    /// <para>根据组织特定的 JSON 脚本评估航空数据，返回制图标注和符号化所需的值。返回的值存储在要素的单个属性中。</para>
    /// </summary>    
    [DisplayName("Prepare Aviation Data")]
    public class PrepareAviationData : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public PrepareAviationData()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_target_gdb">
        /// <para>Target Geodatabase</para>
        /// <para>The ArcGIS Aviation Charting schema workspace on which the evaluation will be run.</para>
        /// <para>将在其上运行评估的 ArcGIS Aviation Charting 方案工作空间。</para>
        /// </param>
        /// <param name="_config_file">
        /// <para>Configuration File (.json)</para>
        /// <para>The JSON file containing the evaluation criteria.</para>
        /// <para>包含评估条件的 JSON 文件。</para>
        /// </param>
        public PrepareAviationData(object _target_gdb, object _config_file)
        {
            this._target_gdb = _target_gdb;
            this._config_file = _config_file;
        }
        public override string ToolboxName => "Aviation Tools";

        public override string ToolName => "Prepare Aviation Data";

        public override string CallName => "aviation.PrepareAviationData";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_target_gdb, _config_file, _in_dataset_names, _out_workspace];

        /// <summary>
        /// <para>Target Geodatabase</para>
        /// <para>The ArcGIS Aviation Charting schema workspace on which the evaluation will be run.</para>
        /// <para>将在其上运行评估的 ArcGIS Aviation Charting 方案工作空间。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Target Geodatabase")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _target_gdb { get; set; }


        /// <summary>
        /// <para>Configuration File (.json)</para>
        /// <para>The JSON file containing the evaluation criteria.</para>
        /// <para>包含评估条件的 JSON 文件。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Configuration File (.json)")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _config_file { get; set; }


        /// <summary>
        /// <para>Input Datasets</para>
        /// <para>The names of the tables and feature classes to be evaluated.</para>
        /// <para>要评估的表和要素类的名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Datasets")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _in_dataset_names { get; set; } = null;


        /// <summary>
        /// <para>Output Workspace</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Workspace")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_workspace { get; set; }


        public PrepareAviationData SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}